home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 November / EnigmA AMIGA RUN 02 (1995)(G.R. Edizioni)(IT)[!][issue 1995-11][Skylink CD].iso / earcd / program / misc / m2pica.lha / M2Pica / Txt / Styx.mod < prev    next >
Text File  |  1995-08-21  |  4KB  |  152 lines

  1. (*******************************************************************************
  2.  : Program.         Styx.MOD
  3.  : Author.          Carsten Wartmann (Crazy Video)
  4.  : Address.         Wutzkyallee 83, 12353 Berlin
  5.  : Phone.           030/6614776
  6.  : E-Mail           C.Wartmann@AMBO.in-berlin.de (bevorzugt)
  7.  : E-Mail           Carsten_Wartmann@tfh-berlin.de
  8.  : Version.         0.99
  9.  : Date.            16.11.1994
  10.  : Copyright.       PD
  11.  : Language.        Modula-2
  12.  : Compiler.        M2Amiga V4.3d
  13.  : Contents.        Flying Lines.
  14. *******************************************************************************)
  15.  
  16. MODULE Styx ;
  17.  
  18. FROM SYSTEM       IMPORT ADR,ADDRESS,TAG,BITSET ;
  19.  
  20. FROM UtilityD     IMPORT tagEnd,tagDone ;
  21.  
  22. FROM Arts         IMPORT Assert ;
  23.  
  24. FROM ExecL        IMPORT Forbid,Permit ;
  25.  
  26. FROM DosL         IMPORT Delay ;
  27.  
  28. FROM GraphicsL    IMPORT SetRGB4 ;
  29.  
  30. FROM IntuitionD   IMPORT ScreenPtr ;
  31. FROM IntuitionL   IMPORT ScreenToFront ;
  32.  
  33. FROM RandomNumber IMPORT RND ;
  34.  
  35. FROM VilIntuiSupL IMPORT OpenVillageScreenTagList,CloseVillageScreen,
  36.                          LockVillageScreen,UnLockVillageScreen,
  37.                          VillageModeRequest ;
  38. FROM VilIntuiSupD IMPORT LinePacked,
  39.                          TavisTags,InvalidID ;
  40.  
  41.  
  42.  
  43. CONST Lines = 100 ;
  44.  
  45.  
  46. TYPE Line = RECORD
  47.        x1,y1,
  48.        x2,y2 : INTEGER ;
  49.      END ;
  50.  
  51.  
  52. VAR scr      : ScreenPtr ;
  53.     start    : ADDRESS ;
  54.     col      : LONGINT ;
  55.     mode     : LONGCARD ;
  56.     x1,y1,
  57.     x2,y2,
  58.     x1a,ya1,
  59.     x2a,y2a,
  60.     x1s,y1s,
  61.     x2s,y2s  : INTEGER ;
  62.     i,il,
  63.     width,
  64.     height   : LONGINT ;
  65.     ok       : LONGINT ;
  66.     tags     : ARRAY [0..40] OF LONGCARD ;
  67.     lines    : ARRAY [0..Lines] OF Line ;
  68.  
  69.  
  70.     cia[0BFE000H]  : BITSET ;
  71.  
  72.  
  73.  
  74. BEGIN
  75.   mode := VillageModeRequest(TAG(tags,tavisMinDepth,  8,
  76.                                       tavisMaxDepth,  8,
  77.                                            tagDone)) ;
  78.   Assert(mode#InvalidID,ADR("Kein Screenmode gewählt !")) ;
  79.  
  80.   scr := OpenVillageScreenTagList(TAG(tags,tavisScreenModeID,  mode,
  81.                                            tagDone)) ;
  82.   Assert(scr#NIL,ADR("Kann PICASSO Screen nicht öffnen !")) ;
  83.  
  84.   FOR col:=0 TO 41 DO
  85.     SetRGB4(ADR(scr^.viewPort),col+4,252,col*6,0);
  86.     SetRGB4(ADR(scr^.viewPort),col+46,246-col*6,252,0);
  87.     SetRGB4(ADR(scr^.viewPort),col+88,0,252,col*6);
  88.     SetRGB4(ADR(scr^.viewPort),col+130,0,246-col*6,252);
  89.     SetRGB4(ADR(scr^.viewPort),col+172,col*6,0,252);
  90.     SetRGB4(ADR(scr^.viewPort),col+214,252,0,246-col*6)
  91.   END;
  92.  
  93.   width  := LONGINT(scr^.width-1) ;
  94.   height := LONGINT(scr^.height-1) ;
  95.  
  96.   x1 := 200 ; y1 := 200 ;
  97.   x2 := 300 ; y2 := 237 ;
  98.   x1s := 4 ; y1s := -4 ;
  99.   x2s := 5 ; y2s := -7 ;
  100.  
  101.   FOR i:=0 TO Lines DO
  102.     lines[i].x1 := x1 ;
  103.     lines[i].y1 := y1 ;
  104.     lines[i].x2 := x2 ;
  105.     lines[i].y2 := y2 ;
  106.   END ;
  107.   i:=0 ;
  108.  
  109.   WHILE (6 IN cia) DO
  110.     INC(x1,x1s) ;
  111.     INC(y1,y1s) ;
  112.     INC(x2,x2s) ;
  113.     INC(y2,y2s) ;
  114.     i := (i + 1) MOD Lines ;
  115.  
  116.     IF (x1>=width) OR (x1<=0) THEN
  117.       x1s:=x1s*(-1) ;
  118.       INC(x1,x1s) ;
  119.     END ;
  120.     IF (y1>=height) OR (y1<=0) THEN
  121.       y1s:=y1s*(-1) ;
  122.       INC(y1,y1s) ;
  123.     END ;
  124.     IF (x2>=width) OR (x2<=0) THEN
  125.       x2s:=x2s*(-1) ;
  126.       INC(x2,x2s) ;
  127.     END ;
  128.     IF (y2>=height) OR (y2<=0) THEN
  129.       y2s:=y2s*(-1) ;
  130.       INC(y2,y2s) ;
  131.     END ;
  132.     lines[i].x1 := x1 ;
  133.     lines[i].y1 := y1 ;
  134.     lines[i].x2 := x2 ;
  135.     lines[i].y2 := y2 ;
  136.  
  137.     col := x1 MOD 251 + 4 ;
  138.     LinePacked(scr,x1,y1,x2,y2,col) ;
  139.     il := (i - (Lines-1)) MOD Lines ;
  140.     LinePacked(scr,lines[il].x1,lines[il].y1,lines[il].x2,lines[il].y2,0) ;
  141.  
  142.   END ;
  143.  
  144. CLOSE
  145.   IF scr#NIL THEN
  146.     UnLockVillageScreen(scr) ;
  147.     CloseVillageScreen(scr) ;
  148.   END ;
  149.  
  150. END Styx .
  151.  
  152.